home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 1.iso
/
ARGONET
/
PD
/
FILER
/
TARSRC.SPK
/
c
/
options
< prev
next >
Wrap
Text File
|
1994-09-13
|
4KB
|
202 lines
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include "tar.h"
#include "options.h"
static void SetDevice(char **cp) {
if (!UnixArchive)
MultipleVolumes = 1;
driveno = **cp - '0';
switch (*(*cp + 1)) {
case 'D':
case 'E':
case 'F':
case 'L':
case 'M':
case 'Q':
case 'H':
case 'N':
format = *(++*cp);
break;
default:
fprintf(stderr, "tar: %c: unknown disc format\n", *(*cp + 1));
Terminate(25);
}
} /* SetDevice */
static tapedevice_t CheckDevNames(char *TestName) {
char *cp;
char lowername[256];
cp = lowername;
while (*TestName) {
*cp++ = toupper(*TestName++);
}
if (strncmp(lowername, "RMT:", 4) == 0) {
return tapedevice_RMT;
}
if (strncmp(lowername, "FLOPPY:", 7) != 0) {
return tapedevice_FILE;
}
if (lowername[7] != '0' && lowername[7] != '1') {
return tapedevice_FILE;
}
cp = lowername + 7;
SetDevice(&cp);
return tapedevice_DISC;
} /* CheckDevNames */
int CheckOption(char **cp, char *next) {
int NextCnt;
NextCnt = 0;
switch(**cp) {
case ' ':
case '-':
break;
case '0':
case '1':
case '2':
case '3':
fprintf(stderr,
"tar: warning: obsolete option '%c' use 'f' with device name instead\n",**cp);
SetDevice(cp);
break;
case 'b':
if (next == NULL) {
fprintf(stderr,"tar: blocksize must be specified with 'b' option\n");
usage();
}
nblock = atoi(next);
if (nblock <= 0) {
fprintf(stderr,"tar: invalid blocksize \"%s\"\n",next);
Terminate(7);
}
NextCnt++;
break;
case 'c':
CreateArchive = 1;
AppendToArchive = 1;
break;
case 'e':
if (next == NULL) {
fprintf(stderr,"tar: extension length must be specified with 'e' option\n");
usage();
}
MaxExtLength = atoi(next);
NextCnt++;
break;
case 'f':
if (next == NULL) {
fprintf(stderr,"tar: tapefile must be specified with 'f' option\n");
usage();
}
tapedevice = CheckDevNames(next);
switch (tapedevice) {
case tapedevice_FILE:
ArchiveName = next;
break;
case tapedevice_RMT:
ArchiveName = next + 4;
break;
}
ArchiveFileSpecified = 1;
NextCnt++;
break;
case 'i':
IgnoreArchiveErrors = 1;
break;
case 'l':
UseListFile = 1;
if (next != NULL) {
listfile = next;
NextCnt++;
}
break;
case 'm':
DoNotExtractFileDates = 1;
break;
case 'p':
ConvertExclamationMark = 1;
break;
case 'r':
AppendToArchive = 1;
break;
case 's':
SwapExtensionToDir = 1;
break;
case 't':
ListArchivesContents = 1;
break;
case 'v':
Verbose = 1;
break;
case 'w':
ConfirmActions = 1;
break;
case 'x':
ExtractFromArchive = 1;
break;
case 'z':
CompressFiles = 1;
break;
case 'B':
Reblock = 1;
break;
case 'E':
PeriodSlashConversion = 1;
break;
case 'F':
FormatFloppies = 1;
break;
case 'M':
MultipleVolumes = 1;
break;
case 'L':
if (next == NULL) {
fprintf(stderr,"tar: maximum leaf length must be specified with 'L' option\n");
usage();
}
MaxLeafLength = atoi(next);
NextCnt++;
break;
case 'O':
NoDiskDestroyConfirmation = 1;
break;
case 'P':
UseCanonicalisedPaths = 1;
break;
case 'Q':
QuietExecution = 1;
break;
case 'S':
SwapInWholePath = 1;
break;
case 'T':
CommaFileTypes = 1;
break;
case 'U':
UnixArchive = 1;
MultipleVolumes = 0;
break;
case 'V':
VeryVerbose = 1;
Verbose = 1;
break;
case 'X':
AddFileTypeExtension = 1;
break;
case 'Z':
ConvertCompressExtension = 1;
break;
default:
fprintf(stderr, "tar: %c: unknown option\n", **cp);
usage();
}
return NextCnt;
} /* CheckOption */